// pages/coupon/index.js
Page({
  data: {
    active: 0,
    couponList: [],
    loading: true,
    isEmpty: false,
    tabs: [
      { title: '可用', status: 'valid' },
      { title: '已使用', status: 'used' },
      { title: '已过期', status: 'expired' }
    ],
    currentStatus: 'valid'
  },

  onLoad: function (options) {
    // 如果从其他页面跳转过来并指定了状态，则切换到对应标签
    if (options.status) {
      const index = this.data.tabs.findIndex(tab => tab.status === options.status);
      if (index !== -1) {
        this.setData({ active: index, currentStatus: options.status });
      }
    }
    
    // 如果是从选择优惠券页面跳转过来的，设置选择模式
    if (options.select) {
      this.setData({
        isSelectMode: options.select === 'true'
      });
    }
    
    this.loadCouponList();
  },

  onPullDownRefresh: function () {
    this.resetAndReload();
    wx.stopPullDownRefresh();
  },

  // 切换标签
  onTabChange: function (event) {
    const index = event.detail.index;
    const status = this.data.tabs[index].status;
    
    this.setData({
      active: index,
      currentStatus: status,
      couponList: [],
      loading: true,
      isEmpty: false
    });
    
    this.loadCouponList();
  },

  // 加载优惠券列表
  loadCouponList: function () {
    const { currentStatus } = this.data;
    
    // 显示加载状态
    this.setData({ loading: true });
    
    // 模拟API请求，实际开发中应替换为真实的API调用
    setTimeout(() => {
      // 模拟获取优惠券数据
      const couponList = this.getMockCouponList(currentStatus);
      
      // 更新数据
      this.setData({
        couponList: couponList,
        loading: false,
        isEmpty: couponList.length === 0
      });
    }, 1000);
  },

  // 重置并重新加载
  resetAndReload: function () {
    this.setData({
      couponList: [],
      loading: true,
      isEmpty: false
    });
    
    this.loadCouponList();
  },

  // 使用优惠券
  useCoupon: function (event) {
    const couponId = event.currentTarget.dataset.id;
    
    // 如果是选择模式，则返回选中的优惠券
    if (this.data.isSelectMode) {
      const selectedCoupon = this.data.couponList.find(item => item.id === couponId);
      
      if (selectedCoupon) {
        // 将选中的优惠券信息返回给上一页
        const pages = getCurrentPages();
        const prevPage = pages[pages.length - 2];
        
        // 调用上一个页面的方法，传递选中的优惠券
        if (prevPage && prevPage.setSelectedCoupon) {
          prevPage.setSelectedCoupon(selectedCoupon);
        }
        
        wx.navigateBack();
      }
      return;
    }
    
    // 非选择模式，跳转到商品列表页面
    wx.navigateTo({
      url: '/pages/index/index?couponId=' + couponId
    });
  },

  // 模拟获取优惠券列表数据
  getMockCouponList: function (status) {
    const couponList = [];
    const currentDate = new Date();
    
    // 生成模拟数据
    for (let i = 0; i < 10; i++) {
      // 根据状态生成不同的优惠券
      let startDate, endDate;
      
      if (status === 'valid') {
        // 有效的优惠券：开始日期在过去，结束日期在未来
        startDate = new Date();
        startDate.setDate(startDate.getDate() - Math.floor(Math.random() * 30));
        
        endDate = new Date();
        endDate.setDate(endDate.getDate() + Math.floor(Math.random() * 30) + 1);
      } else if (status === 'used') {
        // 已使用的优惠券：开始和结束日期都可能在过去或未来
        startDate = new Date();
        startDate.setDate(startDate.getDate() - Math.floor(Math.random() * 60));
        
        endDate = new Date();
        endDate.setDate(startDate.getDate() + Math.floor(Math.random() * 60));
      } else if (status === 'expired') {
        // 已过期的优惠券：结束日期在过去
        startDate = new Date();
        startDate.setDate(startDate.getDate() - Math.floor(Math.random() * 60) - 30);
        
        endDate = new Date();
        endDate.setDate(endDate.getDate() - Math.floor(Math.random() * 30) - 1);
      }
      
      // 随机生成优惠券金额和使用门槛
      const amount = Math.floor(Math.random() * 95) + 5; // 5-99元
      const minAmount = amount + Math.floor(Math.random() * 200) + 1; // 最低消费金额
      
      couponList.push({
        id: `C${10000 + i}`,
        name: `${amount}元优惠券`,
        amount: amount,
        minAmount: minAmount,
        startDate: this.formatDate(startDate),
        endDate: this.formatDate(endDate),
        status: status,
        description: `满${minAmount}元可用`,
        useLimit: this.getRandomUseLimit()
      });
    }
    
    return couponList;
  },

  // 获取随机的使用限制
  getRandomUseLimit: function () {
    const limits = [
      '全场通用',
      '仅限食品类',
      '仅限电器类',
      '仅限服装类',
      '仅限线上商城',
      '仅限实体门店',
      '新用户专享',
      '会员专享'
    ];
    
    return limits[Math.floor(Math.random() * limits.length)];
  },

  // 格式化日期
  formatDate: function (date) {
    const year = date.getFullYear();
    const month = (date.getMonth() + 1).toString().padStart(2, '0');
    const day = date.getDate().toString().padStart(2, '0');
    
    return `${year}.${month}.${day}`;
  }
});